package repaso;

import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;

import junit.framework.Assert;

import org.junit.Test;

public class LibreriaTest {

	@Test
	public void getSeccionesTest() {
		Libreria lib = new Libreria();
		Libro libro1 = new Libro("Farenheit 451", "Ray Bradbury", 50.0);
		Libro libro2 = new Libro("La torre Vol 1", "Stephen King", 80.0);
		Libro libro3 = new Libro("Diario del Chavo del 8", "Chespirito", 30.0);
		Libro libro4 = new Libro("Cita con Rama", "Artur Clark", 100.0);

		lib.agregar(libro1, "Ciencia Ficcion");
		lib.agregar(libro2, "Terror");
		lib.agregar(libro3, "Comedia");
		lib.agregar(libro4, "Ciencia Ficcion");

		Set<String> secciones = new HashSet<String>();
		secciones.add("Ciencia Ficcion");
		secciones.add("Terror");
		secciones.add("Comedia");
		
		Assert.assertEquals(secciones, lib.getSecciones());
	}
	
	@Test
	public void getLibrosTest() {
		Libreria lib = new Libreria();
		Libro libro1 = new Libro("Farenheit 451", "Ray Bradbury", 50.0);
		Libro libro2 = new Libro("La torre Vol 1", "Stephen King", 80.0);
		Libro libro3 = new Libro("Diario del Chavo del 8", "Chespirito", 30.0);
		Libro libro4 = new Libro("Cita con Rama", "Artur Clark", 100.0);

		lib.agregar(libro1, "Ciencia Ficcion");
		lib.agregar(libro2, "Terror");
		lib.agregar(libro3, "Comedia");
		lib.agregar(libro4, "Ciencia Ficcion");

		List<Libro> librosTotales = new LinkedList<Libro>();
		librosTotales.add(libro1);
		librosTotales.add(libro2);
		librosTotales.add(libro3);
		librosTotales.add(libro4);
		
		Assert.assertFalse(librosTotales.retainAll(lib.getLibros()));
	}
	
	@Test
	public void getLibrosPorSeccionTest() {
		Libreria lib = new Libreria();
		Libro libro1 = new Libro("Farenheit 451", "Ray Bradbury", 50.0);
		Libro libro2 = new Libro("La torre Vol 1", "Stephen King", 80.0);
		Libro libro3 = new Libro("Diario del Chavo del 8", "Chespirito", 30.0);
		Libro libro4 = new Libro("Cita con Rama", "Artur Clark", 100.0);

		lib.agregar(libro1, "Ciencia Ficcion");
		lib.agregar(libro2, "Terror");
		lib.agregar(libro3, "Comedia");
		lib.agregar(libro4, "Ciencia Ficcion");

		SortedSet<Libro> librosOrdenados = new TreeSet<Libro>(new LibrosComparadorAlfabeticamente());
		librosOrdenados.add(libro1);
		librosOrdenados.add(libro4);
		Assert.assertEquals(librosOrdenados, lib.getLibrosEnSeccion("Ciencia Ficcion"));
		librosOrdenados.clear();
		librosOrdenados.add(libro2);
		Assert.assertEquals(librosOrdenados, lib.getLibrosEnSeccion("Terror"));
	}
	

}
